package com.uncp.comisiondeadmision.util.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@Entity
@Table(name="cdp")
public class ECdp implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name="CODCDP", unique=true, nullable=false, length=10)
	private String str_codcdp;


	@Column(name="CONCEPTO", length=200)
	private String str_concepto;

	@Column(name="ESTADO", length=20)
	private String str_estado;

	@Temporal( TemporalType.TIMESTAMP)
	@Column(name="FECHA")
	private Date str_fecha;

	@Column(name="TOTAL")
	private double dbl_total;

	@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
	@JoinColumn(name="CODPOSTULANTE",nullable=false)
	private EPostulante postulante;

	@ManyToOne
	@JoinColumn(name="CODIGV", nullable=false)
	private EHistorialIgv historialIgv;



	public EHistorialIgv getHistorialIgv() {
		return historialIgv;
	}

	public void setHistorialIgv(EHistorialIgv historialIgv) {
		this.historialIgv = historialIgv;
	}

	public ECdp() {
		postulante = new EPostulante();
	}

	public String getStr_codcdp() {
		return this.str_codcdp;
	}

	public void setStr_codcdp(String str_codcdp) {
		this.str_codcdp = str_codcdp;
	}

	public String getStr_concepto() {
		return this.str_concepto;
	}

	public void setStr_concepto(String str_concepto) {
		this.str_concepto = str_concepto;
	}

	public String getStr_estado() {
		return this.str_estado;
	}

	public void setStr_estado(String str_estado) {
		this.str_estado = str_estado;
	}

	public Date getStr_fecha() {
		return this.str_fecha;
	}

	public void setStr_fecha(Date str_fecha) {
		this.str_fecha = str_fecha;
	}

	public double getDbl_total() {
		return this.dbl_total;
	}

	public void setDbl_total(double dbl_total) {
		this.dbl_total = dbl_total;
	}

	public EPostulante getPostulante() {
		return postulante;
	}

	public void setPostulante(EPostulante postulante) {
		this.postulante = postulante;
	}

	/**
	 * Metodo que genera aleatoriamente un codigo para
	 * el CDP
	 * @param max Rango maximo del CDP
	 * @param min Rango minimo del CDP
	 * @return retorna Codigo de CDP
	 */
	public static String aleatorio(int max,int min){
		int numero=(int)(Math.random()*(max-min))+min;

		StringBuffer sb = new StringBuffer();
		sb.append("00");
		sb.append(numero);
		String cadenaFinal = sb.toString();

		return cadenaFinal;

	}

	
	/**
	 * 
	 * @param costoModalidad Costo por la Modalidad de Ingreso
	 * @param igv Valor del Igv Actual
	 * @return retorna costo que debera pagar el Postulante por Concepto de Admision
	 */
	public static double calcularPago(double costoModalidad, double igv){
		return costoModalidad + (costoModalidad * igv);
	
	}


}